// https://leetcode.cn/problems/rotate-image/?envType=study-plan-v2&envId=top-100-liked


// 这里有个公式就是顺时针旋转和逆时针旋转
// 重点：
// 顺时针：(i, j) -> (j, len - 1 - i)
// 逆时针：(i, j) -> (len - 1 - j, i)

class Solution {
public:
    void rotate(vector<vector<int>>& matrix) {
        int n = matrix.size();
        for (int j = 0; j < n / 2; j++) {
            for (int i = j; i < n - (1 + j); i++) {
                swap(matrix[j][i], matrix[i][n - 1 - j]);
                swap(matrix[j][i], matrix[n - 1 - i][j]);
                swap(matrix[n - 1 - i][j], matrix[n - 1 - j][n - 1 - i]);
            }
        }
    }
};